// 路由
import { generateId } from "../util/common";

export const ROUTER = "exclusiveGateway";
// 条件
export const CONDITION = "condition";
// 发起人
export const START = "startEvent";
// 审核人
export const APPROVER = "userTask";
// 抄送人
export const NOTIFY = "serviceTask";

// 节点验证器KEY
export const KEY_VALIDATOR = "validator";

// 流程数据KEY
export const KEY_PROCESS_DATA = "processData";

//流程配置
export const KEY_PROCESS_CONFIG = "processConfig";

// 默认流程配置
export const createStartNode = () => {
  return {
    id: "node" + generateId(),
    nodeName: "发起节点",
    nodeType: START,
    pageId: null,
    buttonPermList: [{ id: "button1", buttonType: "submit", buttonName: "提交", type: "primary" }],
    formPermList: [],
    candidate: "all",
    candidateName: "所有用户"
  };
};

// 节点配置
export const nodeConfig = {};

// 路由节点配置
nodeConfig[ROUTER] = {
  canAdd: true, // 节点是否可以增加
  hasDrawer: false, // 节点是否可以进行配置
  icon: {
    // 图标
    name: "router", // 图标名
    color: "#3CB371" // 颜色
  },
  defaultNode: {
    // 默认节点结构，用于添加节点时
    nodeName: "条件分支",
    nodeType: ROUTER,
    nextNode: null,
    branchNodes: [
      {
        nodeName: "条件",
        nodeType: CONDITION,
        expression: null,
        expressionList: [{ column: null, condition: null, value: null }],
        isAnd: true,
        isDefault: false,
        nextNode: null
      },
      {
        nodeName: "条件",
        nodeType: CONDITION,
        expression: null,
        expressionList: [],
        isAnd: true,
        isDefault: true,
        nextNode: null
      }
    ]
  }
};

// 条件节点配置
nodeConfig[CONDITION] = {
  color: "#FFFFFF", // 节点标题颜色
  bgColor: "#3CB371", // 节点标题背景颜色
  canAdd: false, // 节点是否可以增加
  canRemoved: true, // 节点是否能够移除
  hasDrawer: true, // 节点是否可以进行配置
  icon: {
    // 图标
    name: "condition", // 图标名
    color: "#3CB371" // 颜色
  },
  defaultNode: {
    nodeName: "条件",
    nodeType: CONDITION,
    expression: null,
    expressionList: [{ column: null, condition: null, value: null }],
    isAnd: true,
    isDefault: false,
    nextNode: {}
  }
};

// 发起人节点配置
nodeConfig[START] = {
  color: "#FFFFFF", // 节点标题颜色
  bgColor: "#1e83e9", // 节点标题背景颜色
  canAdd: false, // 节点是否可以增加
  canRemoved: false, // 节点是否能够移除
  hasDrawer: true, // 节点是否可以进行配置
  icon: {
    // 图标
    name: "start", // 图标名
    color: "#1e83e9" // 颜色
  },
  defaultNode: createStartNode()
};

// 审核人节点配置
nodeConfig[APPROVER] = {
  color: "#FFFFFF", // 节点标题颜色
  bgColor: "#FF8C00", // 节点标题背景颜色
  canAdd: true, // 节点是否可以增加
  canRemoved: true, // 节点是否能够移除
  hasDrawer: true, // 节点是否可以进行配置
  icon: {
    // 图标
    name: "approver", // 图标名
    color: "#FF8C00" // 颜色
  },
  defaultNode: {
    nodeName: "审批节点",
    nodeType: APPROVER,
    pageId: null,
    assigneeType: null,
    assignee: null,
    buttonPermList: [
      { id: "button1", buttonType: "submit", buttonName: "提交", type: "primary" },
      { id: "button2", buttonType: "reject", buttonName: "拒绝", type: "danger" },
      { id: "button3", buttonType: "transfer", buttonName: "转办", type: "warning" },
      { id: "button4", buttonType: "delegate", buttonName: "委派", type: "success" }
    ],
    formPermList: [],
    candidateList: [],
    nextNode: null
  }
};

// 抄送人节点配置
nodeConfig[NOTIFY] = {
  color: "#FFFFFF", // 节点标题颜色
  bgColor: "#808000", // 节点标题背景颜色
  canAdd: true, // 节点是否可以增加
  canRemoved: true, // 节点是否能够移除
  hasDrawer: true, // 节点是否可以进行配置
  icon: {
    // 图标
    name: "notify", // 图标名
    color: "#808000" // 颜色
  },
  defaultNode: {
    title: "抄送人",
    nodeName: "抄送节点",
    nodeType: NOTIFY,
    config: {},
    nextNode: null
  }
};
